package jvs.vfs.opt.home;

/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import android.content.ContentValues;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;

/**
 * Represents an item in the launcher.
 */
class ItemInfo {

	String id = null;

	String title;

	Drawable icon;

	Intent intent;

	/**
	 * One of {@link LauncherSettings.Favorites#ITEM_TYPE_APPLICATION},
	 * {@link LauncherSettings.Favorites#ITEM_TYPE_SHORTCUT},
	 * {@link LauncherSettings.Favorites#ITEM_TYPE_USER_FOLDER}, or
	 * {@link LauncherSettings.Favorites#ITEM_TYPE_APPWIDGET}.
	 */
	int itemType;

	/**
	 * The id of the container that holds this item. For the desktop, this will
	 * be {@link LauncherSettings.Favorites#CONTAINER_DESKTOP}. For the all
	 * applications folder it will be {@link #NO_ID} (since it is not stored in
	 * the settings DB). For user folders it will be the id of the folder.
	 */
	long container = -1;

	/**
	 * Iindicates the screen in which the shortcut appears.
	 */
	int screen = -1;

	/**
	 * Indicates the X position of the associated cell.
	 */
	int cellX = -1;

	/**
	 * Indicates the Y position of the associated cell.
	 */
	int cellY = -1;

	/**
	 * Indicates the X cell span.
	 */
	int spanX = 1;

	/**
	 * Indicates the Y cell span.
	 */
	int spanY = 1;

	/**
	 * Indicates whether the item is a gesture.
	 */
	boolean isGesture = false;

	ItemInfo() {
	}

	ItemInfo(ItemInfo info) {
		id = info.id;
		cellX = info.cellX;
		cellY = info.cellY;
		spanX = info.spanX;
		spanY = info.spanY;
		screen = info.screen;
		itemType = info.itemType;
		container = info.container;
	}

	/**
	 * Write the fields of this item to the DB
	 * 
	 * @param values
	 */
	void onAddToDatabase(ContentValues values) {
		// values.put(LauncherSettings.BaseLauncherColumns.ITEM_TYPE, itemType);
		// if (!isGesture) {
		// values.put(LauncherSettings.Favorites.CONTAINER, container);
		// values.put(LauncherSettings.Favorites.SCREEN, screen);
		// values.put(LauncherSettings.Favorites.CELLX, cellX);
		// values.put(LauncherSettings.Favorites.CELLY, cellY);
		// values.put(LauncherSettings.Favorites.SPANX, spanX);
		// values.put(LauncherSettings.Favorites.SPANY, spanY);
		// }
	}

	static void writeBitmap(ContentValues values, Bitmap bitmap) {
		// if (bitmap != null) {
		// // Try go guesstimate how much space the icon will take when
		// // serialized
		// // to avoid unnecessary allocations/copies during the write.
		// int size = bitmap.getWidth() * bitmap.getHeight() * 4;
		// ByteArrayOutputStream out = new ByteArrayOutputStream(size);
		// try {
		// bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
		// out.flush();
		// out.close();
		//
		// values.put(LauncherSettings.Favorites.ICON, out.toByteArray());
		// } catch (IOException e) {
		// Log.w("Favorite", "Could not write icon");
		// }
		// }
	}

	@Override
	public String toString() {
		return "id: " + id + ", intent: " + intent + ", itemType: " + itemType
				+ ", title: " + title + ", icon: " + icon;
	}

}
